perm filename MPR11.F4[P11,LCS] blob
sn#594220 filedate 1981-06-11 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 C**** MPRFAI.F4, PSRT (NOW A DUMMY)
C00025 ENDMK
C⊗;
C**** MPRFAI.F4, PSRT (NOW A DUMMY)
SUBROUTINE MPRFAI
IMPLICIT INTEGER(A-Q,S-Z)
REAL XDIS,DIS,A,B,STFF,CENTR,POS,BOT,TOP,TOP2,TOTAL
COMMON /DL/IXRX,SAVER,NAME,EXT /FRMT/F78F(1),FA1(1),FA5(1),ASK
COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20)
CC ↓↓↓↓↓ V IS FOR READIN ONLY
COMMON /XRN/RN(1) /ALF/INP(72),ML
1 /STF/RSTFAC(0/7),RSTJ2 /POSI/STFF(0/7),JJ2,POS
1 /LIMIT/LIMIT,ITEM,L,I,M /DPY/GO,TOP,BOT
1 /PTR/PWDS(1) /PLTR/PLT,RHT,DIS,XDIS
EQUIVALENCE (J3,JQ(1)),(J5,JQ(3)),(R5,RJQ(3)),(POS,IPOS)
1,(R6,RJQ(4)),(R7,RJQ(5)),(R9,RJQ(7)),(J10,JQ(8)),(RX3,RJQ(20))
1,(R4,RJQ(2)),(R3,RJQ(1)),(I1,INP(1)),(R8,RJQ(6))
DATA IP/'P'/,FA1/'( A1)'/
C MM←1↔NN←2↔J←3↔LL←4↔ AA←6↔Y←7↔V←10 ↔R←12↔RN←13↔K←14↔RB←15↔KK←11↔SY←5
ITMS=0
TOTAL=0
RPLT=-999.
C RPLT WILL BE FOR HEAVY STAFF LINES.
22 I1=0
2 TOP=-999.
BOT=999.
20 PLT=0
PLOTIT=0
EDX=-1
M=1
GO TO 5504
11 CALL NOTWRT
57 IF(PLT)GO TO 6120
ITEM=ITEM+1
IF(EDX.EQ.-1)GO TO 77
IF(M.LT.I)GO TO 6120
77 IF(PLOTIT.EQ.-2)GO TO 2311
5504 IF(I1.EQ.IP)GO TO 2311
I1=IP
INP(2)='%'
C FLAG FOR 1ST TIME IN PLTCMD
311 JA=0
2311 NOSET=0
CALL PLTCMD(NOSET)
IF(INP(2).EQ.-1)GO TO 30
C **** END OF DATA ***
IF(PLOTIT.EQ.0)GO TO 3005
I1=IP
PLOTIT=-1
M=1
EDX=-1
DO 5532 K=1,9
5532 JQ(K)=RJQ(K)
IF(PLOTIT.EQ.-1)GO TO 5121
590 I1=0
C TO RUN THROUGH DATA.
TOP=-999
BOT=999
C GOES TO PLOTTER
85 M=1
ITEM=0
PLT=1
EDX=0
GO TO 6120
30 A=TOTAL/200.0
CALL ENDIT(A,ITMS)
C THE END OF THE DATA
60 J2=R2
IF(J2.GE.8)GO TO 160
IF(J2.GE.0)GO TO 16
160 CALL ILLEGL
GO TO 57
16 RSTJ2=RSTFAC(J2)
POS=STFF(J2)
IF(JA.NE.16)GO TO 61
IF(R5.GE.100.)R5=R5-100.
C >100 FOR TEXT IN ORCH SCORES TO GO IN ALL SEP PARTS
IF(J10.NE.1)GO TO 62
R3=RWD3
C POSITIONS TEXT ITEMS.
62 RWD3=R5*RSTJ2*R9+R3
61 RX3=R3
J3=ROFF(RHORZ(R3))
C LINE IS DIVIDED INTO 200 POINTS.
CALL CENTX
C SETS VERT.(CENTR) POSITION BASED ON STAFF AND R4
R3=J3
IF(JA.LE.2)GO TO 11
IF(JA.LE.18)GO TO 551
CALL UNKNWN(JA)
C TRAP FOR UNKNOWN CODE #S (SUCH AS 99-FOR "NO KSIG".
GO TO 57
C JA NEVER =13,14,15 AS YET.
551 GO TO(11,11,68,25,67, 625,116,125,11,69, 68,12,12,12,12
1 ,116,81,80),JA
69 CALL MAKNUM(R5)
GO TO 57
68 CALL CLEFS
GO TO 57
67 CALL SLUR
GO TO 57
116 CALL ALPHA
GO TO 57
81 CALL KSIG
GO TO 57
12 CALL CIRCLE
GO TO 57
80 CALL METER
GO TO 57
125 IF(R2.EQ.0)RMOV=R8
CALL STAFF
GO TO 57
625 CALL BEAMX
GO TO 57
25 CALL ITMSUB
C BAR LINES AND SEVERAL OTHER KINDS OF LINES.
GO TO 57
3005 IF(RPLT.EQ.-999.)RPLT=R9
C R9=1 FOR HEAVY STAFF LINES. (FOR XGP)
PLOTIT=-2
IF(ITMS.NE.0.OR.NOSET.NE.0)GO TO 3006
C FIRST TIME CHECK FOR NOSET FLAG
C NOSET=-1 IF NOSET IS ON
TOP2=-999.
RNOMOV=0
3006 CALL INMUS(NAME,EXT,RN,PWDS,RSTFAC)
C INMUS READS OLD OOR NEW FORMAT
C NEW FORMAT AVOIDS 2ND EXTIN CALL
ITEM=JJ2-2
ITMS=ITMS+ITEM
I=IPOS
2203 IF(I.LE.3000)GO TO 590
CALL TOOMCH(I)
C ***** TOO MUCH DATA ',I4,'/2000')
121 IF(PLOTIT.EQ.0)GO TO 5504
CC*** ONLY NEEDED WITH PLOTTER 5121 CALL PSRT
CC BUT MUST MOVE RN DATA TO RN(3000) NOIR USES RN(1-1500)
CCC5121 DO 5120 K=1,I
CCC5120 RN(K+2999)=RN(K)
CCC DO 5122 K=1,ITEM+1
CCC5122 PWDS(K)=PWDS(K)+2999
CCC M=3000
CCC I=I+2999
C IF P5=0 MOVES UP AT START, IF P6=0 MOVES UP AT END.
C;;;;;;;;;; HEAVY STAFF LINE FEATURE DISABLED 7/23/79 ;;;;;;;;;;;;;;
C;; SKIPE RPLT ; PLT=-1
C;; SOS PLTR ; IF(RPLT.NE.0)PLT=-2
C;;;;;;;;;; HEAVY STAFF LINE FEATURE DISABLED 7/23/79 ;;;;;;;;;;;;;;
C (J8) P8=1 OR 2 FOR 2-PASS PLOTS
5121 PLT=-1
DIS=R2*1.24
XDIS=1./DIS
RHT=R3*1.2
C 1.24 AND 1.2 ARE TO FIT 8 1/2 X 11 FORMAT
C FIRST TIME RMOV=0 OR +
IAC=0
IF(RMOV.NE.0)GO TO 701
IAC=-1
C SET AC3 (FLAG) TO -1
TOTAL=TOTAL+(TOP-BOT)*RHT
C TOTAL=TOTAL IMAGE LENGTH (IN 200THS INCH)
701 A=BOT*RHT
C ??????
BOT=-A
IF(IAC.LT.0)GO TO 702
IF(RMOV.GT.0)GO TO 703
IF(TOTAL.EQ.0)TOTAL=BOT
703 TOTAL=TOTAL+TOP*RHT
C TOTAL includes BOT with first file only.
702 IF(TOP2.EQ.-999)GO TO 8121
BOT=BOT+TOP2
IF(TOP2.EQ.0)BOT=0
A=BOT
GO TO 9121
8121 RNOMOV=0
9121 IF(R7.EQ.0)R7=RMOV
C RMOV HAS INCHES FROM P8 OF STAFF 0.
IF(RNOMOV.GT.1)BOT=RNOMOV
RNOMOV=200.*R3
IF(R7.GE.0)RNOMOV=RNOMOV*R7
RNOMOV=RNOMOV+R6
RMOV=-1
C THIS IS AFTER 1ST TIME.
C R6=1 FOR NO MOVE AT END. R7=# OF INCHES TO MOVE FOR NEW STAFF 0.
C (J4) P4=1 FOR XGP OUTPUT
IF(J5.NE.0)GO TO 6120
C MOVES 0 POINT OVER EACH TIME.
6121 CALL PLOT(0,IFIX(BOT),-3)
C MOVES PLOTTER UP IF P5=0.
C NEXT RUNS THROUGH DATA WITH NEW CHANGES.
6120 IF(M.GE.I)GO TO 7120
CALL RUNTHR(M)
GO TO 60
7120 M=1
A=50.*RHT
TOP=TOP*RHT
IF(RNOMOV.EQ.0)GO TO 7122
A=0
7121 IF(RNOMOV.LE.1)GO TO 7123
A=RNOMOV
TOTAL=TOTAL+A-TOP
GO TO 7123
7122 TOTAL=TOTAL+A
A=A+TOP
7123 CALL PLOT(0,IFIX(A),3)
IF(RNOMOV.EQ.1)GO TO 20
C PRESERVES TOP AND BOT IF RNOMOV
TOP=A
TOP2=TOP
GO TO 2
C ALWAYS START PLOT WITH BOTTOM UNIT ON PAGE AND WORK UP.
END
C PPP: BLOCK =350 ;THIS WAS 250 - 2/78, 6/78
C ;; SUBROUTINE PSRT(P)
C ;; SORTS DATA TO SHORTEN INVISIBLE VECTORS WHEN PLOTTING.
C ;; IMPLICIT INTEGER(S-Z)
C ;; COMMON /XRN/RN(4000) /PTR/PWDS(250),ITEM,L,I,IX
C ;; DIMENSION P(250) **** AN ARGUMENT, INSTEAD.
C PSRT: 0 ; DO 4 K=1,ITEM
C MOVEI K,PPP ; ADR OF P
C MOVEI MM,PTR ;L=PWDS(K)
C MOVEI RB,(MM)
C MOVE NN,LIMIT+1 ; ITEM
C ;; MOVE NN,PTR+=250 ; ITEM
C ADDI NN,-1(MM) ; LAST ADR. OF PWDS
C MOVE SY,[16.0]
C PL4: MOVE R,(MM) ;LL=PWDS(K-1)
C ;LM=PWDS(K+1)
C ;A=RN(L+3)
C ;P(K)=A+1000*RN(L+2)
C MOVE AA,XRN+2(R)
C MOVE J,XRN+1(R)
C FMPR J,[=1000.0]
C FADR J,XRN+2(R) ; IF(RN(L+1).NE.16)GO TO 40
C MOVE V,XRN(R)
C CAME V,[=8.0] ;IF(RN(L+1).EQ.8)P(X)=P(X)-16
C JRST PLA
C FSBR J,[=16.0]
C MOVE AA,[=1000.0]
C PLA: MOVEM J,(K)
C CAME V,SY
C JRST PL40
C CAIN RB,(MM)
C JRST PLAQ ;IF (K.EQ.1) GO TO PLAQ
C MOVE Y,-1(MM) ;Y=PWDS(K-1)
C CAMN SY,XRN(Y)
C JRST PL41
C PLAQ: MOVE V,1(MM) ;V=PWDS(K+1) ;IF(RN(V+1).EQ.16)GO TO 41
C CAMN SY,XRN(V)
C JRST PL41
C JRST PLS ;GO TO 4
C PL40: JUMPGE AA,PLS ;40 IF(A.GE.0)GO TO 4
C PL41: MOVN AA,[=10000.0] ;41 P(K)=-10000
C MOVEM AA,(K)
C PLS: CAIL MM,(NN) ;4 CONTINUE
C JRST PLX
C AOJ MM,
C AOJA K,PL4
C ; PLOTS ALL NEG. POSITIONS FIRST.
C PLX: MOVE AA,LIMIT+3 ;IX=I
C MOVEM AA,LIMIT+4
C CAIL AA,=3000 ;IF(I.LT.1500)I=1500
C ;;6/78 CAIL AA,=1500 ;IF(I.LT.1500)I=1500
C JRST PLY
C MOVEI AA,=3000
C ;;6/78 MOVEI AA,=1500
C MOVEM AA,LIMIT+3
C PLY: MOVEI Y,(AA) ; Y=I
C ADD AA,LIMIT+4 ;I=I+IX-1
C SUBI AA,1
C MOVEM AA,LIMIT+3
C MOVEM Y,LIMIT+4 ;IX=Y
C ; IX IS M IN MAIN PROG.
C ; LEAVES 1500 WDS IN RN FOR STORING "NOIR" DATA.
C PL2: MOVE AA,PPP ;2 A=P(1)
C MOVEI R,1 ;L=1
C MOVEI J,1
C MOVEI K,PPP ;DO 1 K=1,ITEM
C MOVE NN,LIMIT+1
C ADDI NN,(K) ;P(ITEM)
C PL1: CAMG AA,(K) ;IF(A.LE.P(K))GO TO 1
C JRST PLZ
C MOVE AA,(K) ;A=P(K)
C MOVE R,J ;L=K
C PLZ: CAIL K,-1(NN) ;1 CONTINUE
C JRST PLW
C AOJ K,
C AOJA J,PL1
C PLW: CAMN AA,[=10000.0] ; IF(A.EQ.10000.)RETURN
C JRA 16,(16)
C ; ALL ITEMS HAVE NOW BEEN SHUFFLED
C MOVEI V,PTR ;V=PWDS(L)
C ADDI V,(R)
C MOVE V,-1(V)
C MOVE AA,[=10000.0] ;P(L)=10000
C MOVEI J,PPP
C ADDI J,(R)
C MOVEM AA,-1(J)
C MOVEI R,XRN ;L=RN(V)+2+Y
C ADDI R,(V)
C KIFIX R,-1(R)
C ADDI R,2
C ADDI R,(Y)
C SUBI V,(Y) ;V=V-Y
C MOVEI K,XRN ;DO 3 K=Y,L
C ADDI K,(Y)
C MOVEI NN,XRN
C ADDI NN,(R)
C PL3: MOVEI AA,(K)
C ADDI AA,(V) ;3 RN(K)=RN(K+V)
C MOVE AA,-1(AA)
C MOVEM AA,-1(K)
C CAIGE K,(NN)
C AOJA K,PL3
C ;; REPLACED SUBROUTINE LOOP
C MOVEI Y,(R) ;Y=L+1
C ADDI Y,1
C JRST PL2 ;GO TO 2
C END